package com.suning.sawp.service.impl.bi;

import java.io.IOException;
import java.sql.SQLException;

/**
 * BI任务
 * 
 * @author 13071602
 * 
 */
public interface BIReportService {

    /**
     * 上传任务至FTP
     */
    void uploadMainPushComm(String remoteDirectory, String date, String fileName) throws SQLException;

    /**
     * 上传主推任务
     * 
     * @param remoteDirectory
     * @param fileName
     * @throws SQLException
     */
    void uploadMainPush(String remoteDirectory, String date, String fileName) throws SQLException;

    /**
     * 上传预充值
     */
    void uploadPreChargeAct(String remoteDirectory, String date, String fileName) throws SQLException;

    /**
     * 上传门店外拓任务店员与客户关系
     */
    void uploadCustomerRelation4Out(String remoteDirectory, String date, String fileName) throws SQLException;

    /**
     * 上传门店到店熟人与客户关系
     */
    void uploadCustomerRelation4Arrive(String remoteDirectory, String date, String fileName) throws SQLException;

    void uploadStaffFlowingCustomer(String remoteDirectory, String date, String fileName) throws SQLException;

    /**
     * 店员-销售-所有-当月 【#01】
     * BI_STAFF_SALE_ALL_MONTH
     * dj01_tmp_dianjia_salesman_sale_m
     * 
     */
    void downloadBIStaffSaleAllMonth(String remoteDirectory, String date, String fileName) throws IOException;

    /**
     * 店员-销售-所有-当日 【#02】
     * BI_STAFF_SALE_ALL_DAY
     * dj02_tmp_dianjia_salesman_sale_d
     */
    void downloadBIStaffSaleAllDay(String remoteDirectory, String date, String fileName) throws IOException;

    /**
     * 门店-销售-品类-当月 【#03】
     * BI_STORE_SALE_CATE_MONTH
     * dj03_tmp_dianjia_store_brand_sale_m
     */
    void downloadBIStoreSaleCateMonth(String remoteDirectory, String date, String fileName) throws IOException;

    /**
     * 门店-销售-品类-当日 【#04】
     * BI_STORE_SALE_CATE_DAY
     * dj04_tmp_dianjia_store_brand_sale_d
     */
    void downloadBIStoreSaleCateDay(String remoteDirectory, String date, String fileName) throws IOException;

    /**
     * 门店-销售-所有-当月 【#05】
     * BI_STORE_SALE_ALL_MONTH
     * dj05_tmp_dianjia_store_sale_m
     */
    void downloadBIStoreSaleAllMonth(String remoteDirectory, String date, String fileName) throws IOException;

    /**
     * 门店-销售-所有-当日 【#06】
     * BI_STORE_SALE_ALL_DAY
     * dj06_tmp_dianjia_store_sale_d
     */
    void downloadBIStoreSaleAllDay(String remoteDirectory, String date, String fileName) throws IOException;

    /**
     * 店员-主推-任务-当月 【#07】
     * BI_STAFF_PUSH_TASK_MONTH
     * dj07_tmp_dianjia_m_store_brand_salesman_m
     * 
     */
    void downloadBIStaffPushTaskMonth(String remoteDirectory, String date, String fileName) throws IOException;

    /**
     * 门店-主推-任务-当月 【#08】
     * BI_STORE_PUSH_TASK_MONTH
     * dj08_tmp_dianjia_m_store_brand_m
     */
    void downloadBIStorePushTaskMonth(String remoteDirectory, String date, String fileName) throws IOException;

    /**
     * 门店-主推-商品-当月 【#09】
     * BI_STORE_PUSH_COMM_MONTH
     * dj09_tmp_dianjia_m_store_brand_dianjiacode_m
     */
    void downloadBIStorePushCommMonth(String remoteDirectory, String date, String fileName) throws IOException;

    /**
     * 店员-主推-商品-当月【#10】
     * BI_STAFF_PUSH_COMM_MONTH
     * dj10_tmp_dianjia_m_store_brand_salesman_dianjiacode_m
     */
    void downloadBIStaffPushCommMonth(String remoteDirectory, String date, String fileName) throws IOException;

    /**
     * 店员-主推-商品-当日【#11】
     * BI_STAFF_PUSH_COMM_DAY
     * dj11_tmp_dianjia_m_store_brand_salesman_dianjiacode_d
     */
    void downloadBIStaffPushCommDay(String remoteDirectory, String date, String fileName) throws IOException;

    /**
     * 下载预充值返券统计信息【#12】
     * pre_charge_statis
     * dj12_tmp_dianjia_store_salemans_pre_sale_d
     * 
     * @param remoteDirectory
     * @param date
     * @param fileName
     * @throws IOException
     */
    void downloadBIPreChargeStatis(String remoteDirectory, String date, String fileName) throws IOException;

    /**
     * 【13】【BI_STORE_RET_GDS_DAY】
     * dj13_tmp_dianjia_refund_sale
     * @param remoteDirectory
     * @param date
     * @param fileName
     * @throws IOException
     */
    void downloadBIStoreRetGdsDay(String remoteDirectory, String date, String fileName) throws IOException;

    /**
     * 14 【BI_STORE_BRANCH_RET_GDS_DAY】
     * dj14_tmp_dianjia_refund_all
     * @param remoteDirectory
     * @param date
     * @param fileName
     * @throws IOException
     */
    void downloadBIStoreBranchRetGdsDay(String remoteDirectory, String date, String fileName) throws IOException;

    /**
     * 15 【BI_STORE_CATE_RET_GDS_DAY】
     * dj15_tmp_dianjia_refund_day_store_brand
     * @param remoteDirectory
     * @param date
     * @param fileName
     * @throws IOException
     */
    void downloadBIStoreCateRetGdsDay(String remoteDirectory, String date, String fileName) throws IOException;

    /**
     * 
     * 16 【BI_STORE_BRANCH_RET_GDS_WEEK】
     * dj16_tmp_dianjia_refund_week
     * @param remoteDirectory
     * @param date
     * @param fileName
     * @throws IOException
     */
    void downloadBIStoreBranchRetGdsWeek(String remoteDirectory, String date, String fileName) throws IOException;

    /**
     * 17 【BI_STORE_CATE_RET_GDS_WEEK】
     * dj17_tmp_dianjia_refund_week_store_brand
     * @param remoteDirectory
     * @param date
     * @param fileName
     * @throws IOException
     */
    void downloadBIStoreCateRetGdsWeek(String remoteDirectory, String date, String fileName) throws IOException;

    /**
     * 18【BI_STORE_BRANCH_RET_GDS_MONTH】
     * dj18_tmp_dianjia_refund_month
     * @param remoteDirectory
     * @param date
     * @param fileName
     * @throws IOException
     */
    void downloadBIStoreBranchRetGdsMonth(String remoteDirectory, String date, String fileName) throws IOException;

    /**
     * 【19】 <br/>
     * 【BI_STORE_BRANCH_RET_GDS_MONTH】
     * dj19_tmp_dianjia_refund_month_store
     * @param remoteDirectory
     * @param date
     * @param fileName
     * @throws IOException
     */
    void downloadBIStoreRetGdsMonth(String remoteDirectory, String date, String fileName) throws IOException;

    /**
     * 20 <br/>
     * 【BI_STORE_CATE_RET_GDS_MONTH】
     * dj20_tmp_dianjia_refund_month_store_brand
     * @param remoteDirectory
     * @param date
     * @param fileName
     * @throws IOException
     */
    void downloadBIStoreCateRetGdsMonth(String remoteDirectory, String date, String fileName) throws IOException;

    /**
     * bi_store_develop_day
     * dj27_16_tmp_dianjia_yesterday_total_store
     * 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param remoteDirectory
     * @param date
     * @param fileName
     * @throws IOException
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    void downloadBIStoreDevelopDay(String remoteDirectory, String date, String fileName) throws IOException;

    void downloadBIStoreDevelopWeek(String remoteDirectory, String date, String fileName) throws IOException;

    void downloadBIStoreDevelopMonth(String remoteDirectory, String date, String fileName) throws IOException;

    void downloadBIStaffDevelopDay(String remoteDirectory, String date, String fileName) throws IOException;

    void downloadBIStaffDevelopWeek(String remoteDirectory, String date, String fileName) throws IOException;

    void downloadBIStaffDevelopMonth(String remoteDirectory, String date, String fileName) throws IOException;

    void downloadBIStoreDevelopingSaleMonth(String remoteDirectory, String date, String fileName) throws IOException;

    void downloadBIStoreArriveSaleMonth(String remoteDirectory, String date, String fileName) throws IOException;

    void downloadBIStoreRecommendSaleMonth(String remoteDirectory, String date, String fileName) throws IOException;

    void downloadBIStoreDevelopingActivitySaleMonth(String remoteDirectory, String date, String fileName)
            throws IOException;

    void downloadBIStaffDevelopingActivitySaleMonth(String remoteDirectory, String date, String fileName)
            throws IOException;

    void downloadBIStaffArriveSaleDay(String remoteDirectory, String date, String fileName) throws IOException;

    void downloadBIStaffArriveSaleWeek(String remoteDirectory, String date, String fileName) throws IOException;

    void downloadBIStaffArriveSaleMonth(String remoteDirectory, String date, String fileName) throws IOException;

    void downloadBIStaffRecommendSaleDay(String remoteDirectory, String date, String fileName) throws IOException;

    void downloadBIStaffRecommendSaleWeek(String remoteDirectory, String date, String fileName) throws IOException;

    void downloadBIStaffRecommendSaleMonth(String remoteDirectory, String date, String fileName) throws IOException;

    void downloadBIStaffDevelopingSaleMonth(String remoteDirectory, String date, String fileName) throws IOException;

    void downloadStoreRegMemberDetailD(String remoteDirectory, String date, String fileName) throws IOException;

    /**
     * 2801【BI_STORE_GENERAL_OOS,BI_STORE_MAIN_PUSH_OOS,BI_STORE_HOT_OOS】
     * 
     * @param remoteDirectory
     * @param date
     * @param fileName
     * @throws IOException
     */
    void downloadBIStoreOos(String remoteDirectory, String date, String fileName) throws IOException;

    /**
     * 2802【BI_STORE_OOS_DETAIL】
     * 
     * @param remoteDirectory
     * @param date
     * @param fileName
     * @throws IOException
     */
    void downloadBIStoreOosDetail(String remoteDirectory, String date, String fileName) throws IOException;

    /**
     * 【BiStoreRealIncDetailMEntity】 提成明细<br/>
     * dj29
     * 
     * 【bi_store_real_inc_detail_m】
     * 
     * @param remoteDirectory
     * @param date
     * @param fileName
     * @throws IOException
     */
    void downloadBIStoreRealIncDetailM(String remoteDirectory, String date, String fileName) throws IOException;

    void downloadBISaleNoPickOrder(String remoteDirectory, String date, String fileName) throws IOException;

    void downloadBIModelAnalyse(String remoteDirectory, String date, String fileName) throws IOException;

    void downloadBISaleAnalyse(String remoteDirectory, String date, String fileName) throws IOException;

    void downloadBIModelRecommend(String remoteDirectory, String date, String fileName) throws IOException;
    
    /**
     * 36  BI_STORE_CATE_BRAND_MONTH
     */
    void downloadBIStoreCateBrandMonth(String remoteDirectory, String date, String fileName) throws IOException;
    
    /**
     * 37 BI_STORE_CATE_BRAND_DAY
     */
    void downloadBIStoreCateBrandDay(String remoteDirectory, String date, String fileName) throws IOException;
    
    /**
     * 37 BI_STORE_CATE_BRAND_MONTH_LAST_YEAR  
     */
    void downloadBIStoreCateBrandMonthTOP1(String remoteDirectory, String date, String fileName) throws IOException;
    

    /**
     * 2802_01 文件：o2o_dianjia_model_company_recommend 表：MODEL_COMPANY_RECOMMEND 样机推荐-分公司（根据大区热销商品）
     */
    void downloadBIModelCompanyRecommend(String remoteDirectory, String date, String fileName) throws IOException;

    /**
     * 2802_02 文件：o2o_dianjia_model_area_recommend 表：MODEL_AREA_RECOMMEND 样机推荐-大区（根据全国热销商品）
     */
    void downloadBIModelAreaRecommend(String remoteDirectory, String date, String fileName) throws IOException;

    void downloadBIModelSaleTop(String remoteDirectory, String date, String fileName) throws IOException;

    void downloadBIIndexTaskCard(String remoteDirectory, String date, String fileName) throws IOException;

    /**
     * 后台自然月样机销售数据
     * 
     * @param remoteDirectory
     * @param date
     * @param fileName
     * @throws IOException
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    void downloadBISaleAnalyseIn(String remoteDirectory, String date, String fileName) throws IOException;

    /**
     * 后台自然月样机销售排行
     * 
     * @param remoteDirectory
     * @param date
     * @param fileName
     * @throws IOException
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    void downloadBIModelSaleTopIn(String remoteDirectory, String date, String fileName) throws IOException;

    /**
     * 上传门店信息 功能描述: <br>
     * 〈功能详细描述〉
     * 
     * @param remoteDirectory
     * @param date
     * @param fileName
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    void uploadStoreInfo(String remoteDirectory, String date, String fileName);

    /**
     * 
     * 功能描述: 下载门店月度销售任务<br>
     * 〈功能详细描述〉
     * dj32_01_tmp_dianjia_store_mon_sale_task_20161011.dat
     * BI_STORE_MON_SALE_TASK
     * @param remoteDirectory
     * @param date
     * @param fileName
     * @throws IOException
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    void downloadStoreMonSaleTask(String remoteDirectory, String date, String fileName) throws IOException;

    /**
     * 
     * 功能描述: 下载门店品类月度销售任务<br>
     * 〈功能详细描述〉
     * STORE_CATE_MON_SALE_TASK
     * dj32_02_tmp_dianjia_store_mon_sale_task
     * @param remoteDirectory
     * @param date
     * @param fileName
     * @throws IOException
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    void downloadStoreCateMonSaleTask(String remoteDirectory, String date, String fileName) throws IOException;

    /**
     * 
     * 功能描述: 下载门店真实销售<br>
     * 〈功能详细描述〉
     * dj32_03_tmp_dianjia_store_mon_sale_task_last_20161011.dat
     * BI_STORE_MON_SALE_TASK
     * @param remoteDirectory
     * @param date
     * @param fileName
     * @throws IOException
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    void downLoadStoreMonRealSale(String remoteDirectory, String date, String fileName) throws IOException;

    /**
     * 
     * 功能描述: 下载去年同期门店销售<br>
     * 〈功能详细描述〉
     * BI_STORE_LAST_YEAR_SALE
     * dj33_01_tmp_dianjia_beforehand_store_sale
     * @param remoteDirectory
     * @param date
     * @param fileName
     * @throws IOException
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    void downLoadStoreLastYearSaleDay(String remoteDirectory, String date, String fileName) throws IOException;

    /**
     * 
     * 功能描述: 下载去年同期门店品类销售<br>
     * 〈功能详细描述〉
     * BI_STORE_CATE_LAST_YEAR_SALE
     * dj33_02_tmp_dianjia_beforehand_store_sale_cate
     * @param remoteDirectory
     * @param date
     * @param fileName
     * @throws IOException
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    void downLoadStoreCateLastYearSaleDay(String remoteDirectory, String date, String fileName) throws IOException;

    /**
     * 
     * 功能描述: 给出去年同比对应的日期<br>
     * 〈功能详细描述〉
     * 每天两点跑
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    void uploadYoyDate(String remoteDirectory, String date, String fileName);
    
    /**
     * 增量更新昨日企业会员信息
     *
     * @param remoteDirectory
     * @param date
     * @param fileName
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    void downPartyMemberInfo(String remoteDirectory, String date, String fileName)  throws IOException ;
    
    /**
	 * 
	 * 功能描述: 下载公司员工雇佣信息<br>
	 * BI_EMPLOYEE_HIRE_INFO
	 * 
	 * dj35_01_tmp_dianjia_employee_hire_info
	 *
	 * @param remoteDirectory
	 * @param date
	 * @param fileName
	 */
	void downEmployeeHireInfo(String remoteDirectory, String date, String fileName) throws IOException;

	/**
	 * 
	 * 功能描述: 下载员工首次销售信息<br>
	 * BI_EMPLOYEE_FIRST_SALE_INFO
	 * 
	 * dj35_02_tmp_dianjia_employee_first_order_summary
	 *
	 * @param remoteDirectory
	 * @param date
	 * @param fileName
	 */
	void downEmployeeFirstSaleInfo(String remoteDirectory, String date, String fileName) throws IOException;
	
	/**
	 * 
	 * 功能描述: 下载员工总销售信息<br>
	 * BI_EMPLOYEE_TOTAL_SALE_INFO
	 * 
	 * dj35_03_tmp_dianjia_employee_sale_total_summary
	 *
	 * @param remoteDirectory
	 * @param date
	 * @param fileName
	 */
	void downEmployeeTotalSaleInfo(String remoteDirectory, String date, String fileName) throws IOException;
	
	/**
	 * 
	 * 功能描述: 下载员工2016最贵销售信息<br>
	 * BI_EMPLOYEE_EXPENSIVE_SALE_INFO
	 * 
	 * dj35_04_tmp_dianjia_employee_expensive_order_summary
	 *
	 * @param remoteDirectory
	 * @param date
	 * @param fileName
	 */
	void downEmployeeExpensiveSaleInfo(String remoteDirectory, String date, String fileName) throws IOException;
	
	/**
	 * 
	 * 功能描述: 下载员工2016按品类销售的数据信息<br>
	 * BI_EMPLOYEE_CATEGORY_INFO
	 * 
	 * dj35_05_tmp_dianjia_employee_category_summary
	 *
	 * @param remoteDirectory
	 * @param date
	 * @param fileName
	 */
	void downEmployeeCategoryInfo(String remoteDirectory, String date, String fileName) throws IOException;
	
	/**
	 * 
	 * 功能描述: 下载员工2016接待的会员信息<br>
	 * BI_EMPLOYEE_MEMBER_INFO
	 * 
	 * dj35_06_tmp_dianjia_employee_member_summary
	 *
	 * @param remoteDirectory
	 * @param date
	 * @param fileName
	 */
	void downEmployeeMemberInfo(String remoteDirectory, String date, String fileName) throws IOException;
	
	/**
     * 上传已销未提订单编号给大数据
     * 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param remoteDirectory
     * @param date
     * @param fileName
     * @throws SQLException
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    void uploadSaleNoPickOrder(String remoteDirectory, final String date, String fileName) throws SQLException;
    
    /**
     * 40
     *
     * @param remoteDirectory
     * @param date
     * @param fileName
     * @throws SQLException
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    void downloadStoreYbSaleDay(String remoteDirectory, String date, String fileName) throws IOException;
    
    
    /**
     * 41
     *
     * @param remoteDirectory
     * @param date
     * @param fileName
     * @throws SQLException
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    void downloadStoreYbSaleMonth(String remoteDirectory, String date, String fileName) throws IOException;
}
